Phase change memory (“PCM”) is a potential replacement for dynamic random access memory in computers and other digital devices. Like other non-volatile memories, PCM has a limited lifetime or durability. Typically, one or more cells of the blocks of a PCM device may become inoperable and can no longer be reliably written to.
One solution is using error-correcting pointers (“ECPs”). However, ECPs are limited in the number of cell failures that can be corrected based on the total amount of memory available. Once this limit has been reached, subsequent cell failures may render an entire memory block unusable. Accordingly, the entire block may be discarded and any data in the block may have to be remapped. In the case where the PCM blocks are smaller than a virtual memory page, a single block failure may render an entire physical memory page unusable. When such errors occur during the runtime of an application, virtual page remapping may be needed for the application to continue executing, resulting in slower application performance, application crashes, or operating system crashes.